package cn.tedu.demo.mapper;

import cn.tedu.demo.pojo.entity.OrderInfo;
import cn.tedu.demo.pojo.entity.RoomSta;
import cn.tedu.demo.pojo.vo.RoomStaCanBookVO;
import cn.tedu.demo.pojo.vo.RoomStaRoomNumCanBookDaysVO;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

/**
 * 处理房间状态数据的Mapper接口
 *
 * @author Don@tedu.cn
 * @version 0.0.1
 */
@Repository
public interface RoomStaMapper {

    /**
     * 更改房间状态表信息的方法
     * (除了stateId的其他字段,未写SQL语句及service功能)
     * @param roomSta
     * @return
     */
    int update(RoomSta roomSta);
    /**
     *更改房间状态的方法
     * @param roomNum 房间号(先用getCanBookRoomNumByTypeIdDate查找最低匹配房间号)
     * @param checkinDate 入住日期
     * @param checkoutDate 退房日期
     * @return 受影响数据的行数
     */
    int setState(String roomNum,Integer stateId,Date checkinDate,Date checkoutDate);

    /**
     * 根据房型和入住时间,查询最低匹配房间对象的方法(符合条件中,剩余天数最少的房间)
     * @param roomTypeId 房间类型ID
     * @param checkinDate 入住日期
     * @param checkoutDate 退房日期
     * @return 最低匹配房间对象(符合条件中,剩余天数最多的房间),若无则返回null
     */
    RoomStaRoomNumCanBookDaysVO getCanBookRoomNumByTypeIdDate(Integer roomTypeId, Date checkinDate, Date checkoutDate);

    /**
     * 根据房间号和住店时间(入住和退房两个时间),查询房间状态对象列表的方法
     * @param roomNum 房间号(先用getCanBookRoomNumByTypeIdDate查找最多匹配房间号)
     * @param checkinDate 入住日期
     * @param checkoutDate 退房日期
     * @return 房间状态列表
     */
    List<RoomStaCanBookVO> getCanBookStandardVOByTypeNumDate(String roomNum, Date checkinDate, Date checkoutDate);


}
